<?php



class Texte{
	
	
	//tronque un texte dont la taille est trop grande
	//taille à définir ou 1000 caractères par défaut
	public static function formaterTexteCourt($texte, $taille=1000){
		//si le texte est assez court, on ne le coupe pas
		if(strlen($texte)<$taille) return self::toHtml($texte);
		//pour ne pas s'arrêter au milieu d'une phrase, on recherche
		//le prochain '.' dans le texte
		$result=substr($texte,0,$taille);
		$reste=substr($texte,$taille);
		$result.=explode('.',$reste)[0].'. [...]';
		return self::toHtml($result);
	}
	
	
	//encode une chaine en UTF8 si elle n'y est pas déjà
	public static function toUTF8($string){
		//pour assurer la bonne conversion des accents
		if(!mb_detect_encoding($string, 'UTF-8', true)){
			//convertir en UTF8 si la chaine n'y est pas
			$string=mb_convert_encoding($string, 'UTF-8');
		}
		return $string;
	}
	
	
	//pour empécher l'injection de code, on encode les entités HTML
	//exemple : le caractère "<" deviendra "&lt;"
	public static function toHtml($string){
		if(!$string) return '';
		$string=self::toUTF8($string);
		return htmlentities($string, ENT_NOQUOTES, 'UTF-8');
	}
	
	
	//encode une chaine que l'on sait être de code HTML
	public static function toValideHTML($string){
		return htmlspecialchars_decode(self::toHtml($string));
	}
	
	
}


?>